package com.ruoyi.recycleshop.service;

import com.ruoyi.recycle.domain.Coupon;
import com.ruoyi.recycle.dto.AttractDataQueryDTO;
import com.ruoyi.recycle.dto.MerchantBillRecordQueryDTO;
import com.ruoyi.recycle.dto.NativePayDTO;
import com.ruoyi.recycle.vo.AttractDataVO;
import com.ruoyi.recycle.vo.BillRecordVO;
import com.ruoyi.recycle.vo.CouponInfoVO;
import com.ruoyi.recycle.vo.MultiExchangeVO;
import com.ruoyi.recycleshop.domain.ShopExchangeRecord;
import com.ruoyi.recycleshop.dto.ShopExchangeQueryDTO;
import com.ruoyi.recycleshop.vo.ExchangeStatisticsVO;
import com.ruoyi.recycleshop.vo.PayInfoVO;

import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface CashRegisterService {
    Boolean createCoupon(Coupon coupon) throws Exception;

    Boolean modifyCoupon(Coupon coupon);

    Boolean deleteCoupon(Long couponId);


    CouponInfoVO getCouponDetail(String couponNo);

    String pay(NativePayDTO payDTO);

    ExchangeStatisticsVO exchangeStatistics(Long shopName);

    List<ShopExchangeRecord> exchangeList(ShopExchangeQueryDTO queryDTO);

    BillRecordVO billRecord(MerchantBillRecordQueryDTO queryDTO);

    Map<String, List<MultiExchangeVO>> exchangeRecord(Long shopName);

    Boolean withdraw(String account, Integer withdrawAmount);

    AttractDataVO shopDataStatistics(Long shopId);

    PayInfoVO payCompute(String couponNo, BigDecimal amount);

    Boolean blueCoinPay(NativePayDTO payDTO);

    Map<String, String> payCallBack(HttpServletRequest request);

    List<AttractDataVO> shopDataStatistics(AttractDataQueryDTO queryDTO);
}
